Programm fr den Atmega88 in der Front des T-Home Media Receivers X30xT.
ber die serielle Schnittstelle kann man mit dem Atmel "gesprochen" werden.
Fr den direkten Anschlu an einen PC entweder noch einen Pegelwandler (Max232) oder einen USB-TTL Adapter dazwischenschalten.

Die Baudrate betrgt soviel, wie im Dateinamen angegeben (9600, 19200, 38400). Angesteuert wird das Frontend folgendermaen:

1Hallo
gibt Hallo aus.

1Hallo, da bin ich wieder mal
lsst den Text ber das Display bis zum Ende scrollen und fngt von vorne wieder an

2123.45
gibt auf den kleinen Zahlen 123.45 aus

20-1:00
gibt auf den kleinen Zahlen -1:00 aus

3045:11:00
gibt auf den groen Zahlen 45:11:00 aus

40 LED aus

41 LED grn

42 LED rot

43 LED rot und grn

44 lsst das Discsymbol rotieren

45 schaltet die Rotation ab und blendet die Discsymbole aus

46 LED rot, dunkler leuchtend

47 lsst bei den groen Ziffern die Doppelpunkte blinken

48EINSCHALTText
speichert EINSCHALTText als Einschalttext. max.50 Stellen!

49 stoppt das Blinken der Doppelpunkte

59
Schaltet das Display ab

58
lsst alle Digits aufleuchten

57
Volle Displayhelligkeit

56
Display abgedunkelt

<56
Schaltet immer das mit Display ein. (im Normalbetrieb)

54xx
xx muss 2-stellig sein. Stellt die Wiederholungsverzgerung fr die Fernbedienung ein. 00 oder grer 20 stellt auf den Standardwert 02.

53xx 
xx muss 2-stellig sein. Stellt die Anfangsverzgerung fr die Fernbedienung ein. 00 oder grer 20 stellt auf den Standardwert 08.

52
fhrt einen Neustart aus.

51
speichert die aktuelle LED als Einschaltstatus.

50
Sendet den Namen des Programmes. So lassen sich alle ComPorts nach dem Gert absuchen.

6x
Abhngig vom Byte "x" Bit 7 muss gesetzt sein, um ein chr(13) zu vermeiden. Die anderen Bits:
0 - Title, 1 - Ch, 2 - Track, 3 - AM, 4 - FM, 5 - Uhrsymbol, 6 - Antennensymbol

7x
Abhngig vom Byte "x" Bit 7 muss gesetzt sein, um ein chr(13) zu vermeiden. Die anderen Bits:
0 - REC, 1 - Stereo

8x und 9x
Abhngig vom Byte "x" Bit 7 muss gesetzt sein, um ein chr(13) zu vermeiden. Die anderen Bits:
Die einzelnen Fragmente des Disc-Symbols.

Ax
0 - Antennensymbol wird abgeschaltet, 1 - Antennensymbol leuchtet.

Bx
Abhngig vom Byte "x" Bit 7 muss gesetzt sein, um ein chr(13) zu vermeiden. Die anderen Bits:
1 - lsst Antennensymbol Blinken, 2 - lsst : bei kleinen Zahlen blinken, 3 - lsst 1.: bei groen Zahlen blinken, 4 - lsst 2.: bei groen Zahlen blinken

U08:07:56
stellt die innere Uhrzeit auf 08:07:56 Uhr und schaltet die Zeitanzeige ein. Wird nur U gesendet, wird die innere Uhr abgeschaltet.

Ux
x grer 0: bei aktivierter Uhr wird mintlich die Uhrzeit zustzlich gesendet. X=0 schaltet dieses wieder ab. Diese Einstellung berlebt einen Reset nicht.

Kxxx
xxx muss 3-stellig angegeben werden. Kalibriert die Ganggenauigkeit der inneren Uhr. Werte von 0 bis 500. 250 sollte passen, wenn der Takt genau 8MHz ist. Ich rate jedoch gelegentlich die Uhrzeit wegen der Abweichungen des internen Taktes nachzustellen.

Txxxxx
xxxxx muss 5-stellig angegeben werden. Setzt einen Timer fr xxxxx Minuten. Nach Ablauf des Timers wird "ALARM" ausgegeben. Ist der Parameter R = 0 wird der Portb.4 fr eine Sekunde auf GND gezogen.

Rx
setzt die Funktion des Ausgangs Portb.4. x=0: Der Ausgang wird bei Ablauf des Timers auf GND gezogen. X>0: Der Ausgang wird als Resetausgang genutzt und beim Reset des Atmega88 auf GND gezogen.

?
Listet "wichtige" Werte auf.
T: - Wert des rckwrtszhlenden Minutentimers
K: - Wert der Uhrkalibrierung
A: - Fernbedienungsmodus. 1 = Alternative FB, 0 = originale FB
Fa: - Anfangsverzgerung Fernbedienung
Fw: - Wiederholungsverzgerung Fernbedienung
R: - 0 = Portb.4 wird als Alarmausgang des Timers benutzt. >0: Portb.4 wird als Resetausgang genutzt


 
-Eingangsseitig wird alles < chr(13) ignoriert.
-Reset-Ausgang wird nur whrend des Reset-Vorganges auf Ausgang geschaltet, bleibt sonst Eingang, so lassen sich mehrere AVR parallel an einem ISP Anschlu betreiben. Den zu programmierenden whle ich aus, indem ich die Resets alle per Jumper angebunden habe.

Des Weiteren sendet das Display die gedrckte Taste mit einem T davor.

Wenn man die Powertaste zusammen mit der OK-Taste drckt, wird, wenn Parameter R grer 0 ist Portb.4 auf GND gezogen, um z.B. einen Mikrocontroller zu reseten. Anschlieend macht das Display so oder so einen Reset.

Die Codes, welche beim Empfang der original FB gesendet werden:

F0624: Powertaste
F3072: 1
F1792: 2
F2304: 3
F1216: 4
F0960: 5
F1600: 6
F2112: 7
F1072: 8
F0816: 9
F0496: 0
F0780: Pfeil-Links+Strich
F0460: Enter
F1168: Wippe hoch
F0912: Wippe runter
F1552: Wippe links
F1036: Wippe rechts
F2064: OK
F0588: V+
F0252: V-
F0316: P+
F0412: P-
F0231: Men
F0900: Pfeil-Links+Punkt
F1540: Bild-Raus
F2052: Guide
F1027: Video
F0540: Info
F1060: Bild zurck
F0804: Ordner
F0484: Stop
F0612: Play/Pause
F1156: Aufnahme
F0771: Skip zurck
F0451: zurckspulen
F0579: vorspulen
F0307: Skip vor
F0243: rot
F0403: grn
F0531: gelb
F0271: blau
F0207: Tonaus
F0159: Videotext

Die "Klang-zurck" Taste sendet bei meinem Modell nichts, deshalb fehlt sie hier...

Denkt beim programmieren daran, dass der Reset-Pin ber einen Transistor geschaltet wird... Bei mir habe ich den Transistor gegen einen Widerstand getauscht. Dieser sitzt direkt mit an J3.

Des Weiteren darf das Display mit diesem Programm nicht mit dem Mainboard des X30x verbunden werden.

Damit die Werte beim Testen beibehalten wird, sollten die Fuses so gesetzt werden, da der Eeprom Inhalt beim Chip-Erase erhalten bleibt
 
Bei einem Text > 50 Buchstaben wird der Standardtext genommen, sowie die rote LED abgedunkelt eingeschaltet.


Update 16.03.2013: eigene Uhr eingebaut, Timings der alternativen Fernbedienung parametriebar gemacht. Alarmtimer eingebaut. Timings der originalen FB auf 8bit Timer gesetzt, da der 16 Bit Timer fr die Uhr frei werden musste. Einschaltmeldung gendert.

Leider lsst das Feedback zu wnschen brig (Kein Einziges zu den letzten Versionen). 

Programmiert ist das ganze komplett mit Bascom. Der Code belegt 100% des Atmega88.



Gru
peterfido